# %s 字符串
import decimal

# %d 有符号的十进制整数

# %f 浮点数

# 第一种
my_name = '张三'
my_age = 18
my_city = 'beijing'
print('我的名字是张三')
print('我的名字是%s' % my_name)
print('我的名字是%s, 我的年龄是%d' % (my_name, my_age))
print('我的名字是%s,我的年龄是%s,我的城市是%s' % (my_name, my_age, my_city))
# 特殊格式化
money = 8848
num = 1.72
# money 9位数显示，四位数的整数
print('我的金额是:%9d' % money)
print('我的金额是:%d' % money)

# num 保留一位小数 (四舍五入) python中 不精确的
print('我的身高是%.1f' % num)

# num 保留一位小数 (四舍五入) python中 不精确的
# num02 = 22.345
num02 = 66.235
# num02 输出是： 22.34
# 原因：因为计算机只认识和处理和二进制的数值，在实际的计算中，所有的数据都必须为二进制，
# 计算后又转换回来，就是在这个过程中造成数据的截断误差。 二进制数逢 5 进1的时候，出现截断
# python中 float 占4个字节，占32位的二进制。
print('%.2f' % num02)

# 精确的四舍五入

from decimal import Decimal

Decimal('22.345')
print(Decimal(str(num02)).quantize(Decimal('0.00'), rounding='ROUND_HALF_UP'))

# 格式化字符串 除了用 %s ,还可以用 f {'表达式'}
# 第二种格式化 用f-string方式格式化输出
print(f'我的名字是{my_name}, 我的年龄是{my_age + 1}, 我的城市是{my_city}')
